En R contamos con varios paquete de funciones que permiten manipular información espacial con facilidad. sp,sf,Gdal,raster,mapview,tmap, ggplot, etc.
El paquete sf, lanzado en el 2016, el cual se creó en base a las funcionalidades de tres paquetes anteriores: sp, rgeos y rgdal y que implementa el modelo estándar de código abierto simple features (caracteristicas simples) para la representación de objetos del mundo real en la computadora. La principal ventaja que nos entrega el paquete sf es que este permite trabajar con datos espaciales dentro del tidyverse, es decir, poder manejar datos espaciales como si fueran cualquier otro tipo de dataset.
library(sf)
## Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.6.3
ctes <- st_read("municipios_2010_geo.shp")
## Reading layer `municipios_2010_geo' from data source `C:\Users\Los Mourglia\Desktop\mapa\PresentacionFLIsol\municipios_2010_geo.shp' using driver `ESRI Shapefile'
## Simple feature collection with 72 features and 1 field
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -59.67116 ymin: -30.72375 xmax: -55.6203 ymax: -27.25331
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
library(ggspatial)
## Warning: package 'ggspatial' was built under R version 3.6.3
ggplot(ctes) +
geom_sf() +
xlab("Longitud") + ylab("Latitud") +
ggtitle("Municipios de Corrientes",
subtitle = "Fuente: Dirección de Estadisticas y Censos-Ctes")+
annotation_scale()
Visualización interactiva de datos espaciales en R.
mapview:: mapview(ctes,labels=F,map.types = c("Esri.WorldShadedRelief", "OpenStreetMap.DE"), color = "grey40")
mapview::mapview(list(ctes))
mapview::mapview(ctes, alpha.regions = 0.2, aplha = 1)
Los mapas temáticos son mapas geográficos en los que se visualizan las distribuciones de datos espaciales.
library(tmap)
data("World")
qtm(World, fill = "economy", format = "World", style = "col_blind")
qtm(World, fill="pop_est_dens", theme="World", fill.style="kmeans", fill.title="Population per km")
tm_shape(ctes) +
tm_polygons()
tm_shape(World) +
tm_polygons("HPI")
Agregamos Interactividad
tmap_mode("view")
## tmap mode set to interactive viewing
tm_shape(World) +
tm_polygons("HPI") # Indice de Precio de Vivienda
Leaflet es una de las bibliotecas de JavaScript de codigo abierto mas populares para mapas interactivos. Lo utilizan sitios web que van desde The New York Times y The Washington Post hasta GitHub y Flickr, asi como especialistas en SIG como OpenStreetMap, Mapbox y CartoDB.
Este paquete R facilita la integracion y el control de los mapas de leaflet en R.
Zoom interactivo
Hacer mapas utilizando combinaciones arbitrarias de: - Map tiles - Markers - Polygons - Lines - Popups - GeoJSON
Crear mapas directamente desde la consola R o RStudio
Incrustar mapas en documentos Knitr / R Markdown y aplicaciones Shiny
Representar facilmente objetos espaciales de los paquetes sp o sf, o data frame con columnas de latitud / longitud
Usar los limites del mapa y los eventos del mouse para controlar la logica con Shiny.
Visualizar mapas en proyecciones mercator no esfericas.
Aumentar las caracteristicas del mapa usando los complementos elegidos del repositorio de complementos de Leaflet
Uso basico
Crea un mapa con Leaflet con estos pasos basicos:
Cree un widget de mapa llamando al leaflet(). Agregue capas (es decir, caracteristicas) al mapa usando funciones de capa (por ejemplo, addTiles, addMarkers, addPolygons) para modificar el widget del mapa.
library(leaflet)
leaflet() %>%
addTiles() %>% # Map tiles OpenStreetMap
addMarkers(lng=-58.7838539, lat= -27.4671957, popup="UNNE-FACENA-Corrientes")
Si no especifico el Proveedor de Map Tile, usa el de OpenStreeetMap, sino se puedo llamar a otro con la funcion addProviderTiles().Para saber mas sobre Proveedores:aqui
library(leaflet)
leaflet() %>%
addProviderTiles(providers$Stamen.Toner)%>%
addMarkers(lng=-58.78285, lat=-27.46797, popup="UNNE-FACENA-Corrientes")
library(leaflet)
leaflet() %>%
addProviderTiles(providers$Stamen.Terrain)%>%
addMarkers(lng=-58.78285, lat=-27.46797, popup="UNNE-FACENA-Corrientes")
Primero cargos las Librerias que necesito, Luego cargo el archivo de Escuelas Secundarias y lo grafico.
library(leaflet)
library(leaflet.extras)
library(readxl)
icons <- awesomeIconList(
escuela = makeAwesomeIcon(icon='fa-home', library='fa', markerColor = 'blue'))
datos<-read.csv("escuelas secundarias.csv") # Escuelas secundarias
leaflet(datos) %>% addTiles() %>% addProviderTiles(providers$CartoDB.Positron) %>%
addAwesomeMarkers(data=datos,
lng=~Longitud, lat=~Latitud,
label=~Cueanexo,
icon = icons,
popup = paste0("Nombre:", as.character(datos$Cueanexo)),
clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = F),
labelOptions = labelOptions(noHide = F,
direction = 'auto'))
Agrego al costado Barra de Herramientas de Dibujo
leaflet(datos) %>% addTiles() %>% addProviderTiles(providers$CartoDB.Positron) %>%
#addBootstrapDependency() %>%
addMarkers(data=datos,
lng=~Longitud, lat=~Latitud,
label=~Cueanexo,
popup = paste0("Nombre:", as.character(datos$Cueanexo)),
clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = F),
labelOptions = labelOptions(noHide = F,
direction = 'auto'))%>%
addDrawToolbar(
targetGroup='datos',
editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions()))
Leo un archivo .xlsx con las Escuelas Primarias
library(readxl)
prima<-read_xlsx("escuelas primarias.xlsx")
leaflet(datos) %>% addTiles() %>% addProviderTiles(providers$CartoDB.Positron) %>%
#addBootstrapDependency() %>%
addAwesomeMarkers (data=datos,
lng=~Longitud, lat=~Latitud,
label=~Cueanexo,
icon = icons,
popup = paste0("Nombre:", as.character(datos$Cueanexo)),
clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = F),
labelOptions = labelOptions(noHide = F,
direction = 'auto'),group = 'Esc.Secundarias')%>%
addCircleMarkers(data=prima,
lng=~Longitud, lat=~Latitud,
label=~Cueanexo,
#icon= icons,
popup = paste0("Nombre: ", as.character(prima$Nombre)),
clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = F),
labelOptions = labelOptions(noHide = F,
direction = 'auto'),group = 'Esc. Primarias') %>%
addDrawToolbar(
targetGroup='datos',
editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions()))%>%
addLayersControl(
overlayGroups = c('Esc.Secundarias','Esc. Primarias'),
options = layersControlOptions(collapsed = F)
)
Agrego un a rchivo desde un servidor de mapas Geoserver
leaflet(datos) %>% addTiles() %>% addProviderTiles(providers$CartoDB.Positron) %>%
#addBootstrapDependency() %>%
addMarkers(data=datos,
lng=~Longitud, lat=~Latitud,
label=~Cueanexo,
popup = paste0("Nombre:", as.character(datos$Cueanexo)),
clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = F),
labelOptions = labelOptions(noHide = F,
direction = 'auto'),group = 'Esc.Secundarias')%>%
addCircleMarkers(data=prima,
lng=~Longitud, lat=~Latitud,
label=~Cueanexo,
#icon= icons,
popup = paste0("Nombre: ", as.character(prima$Nombre)),
clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = F),
labelOptions = labelOptions(noHide = F,
direction = 'auto'),group = 'Esc. Primarias') %>%
addWMSTiles(
"http://geoportal.corrientes.gob.ar/geoserver/wms/",
layers = "Municipios",
options = WMSTileOptions(format = "image/png", transparent = T, opacity= 0.4),
attribution = "Municipios de Corrientes 2018 Ide Corr",group = 'Municipios'
) %>%
addDrawToolbar(
targetGroup='datos',
editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions()))%>%
addLayersControl(
overlayGroups = c('Esc.Secundarias','Esc. Primarias','Municipios'),
options = layersControlOptions(collapsed = F),position = "bottomleft"
)